package com.juli.v2xdemo.util;

/**
 * Created by juli on 2019/9/26.
 */

public class GPSutils {
    //1是半屏  2是全屏
    public static   int  type=1;
    public static   boolean  chu=false;
    public static   int  xianshi=0;
    //地球平均半径
    private static final double EARTH_RADIUS = 6378137;
    //把经纬度转为度（°）
    private static double rad(double d){
        return d * Math.PI / 180.0;}
    /**
     * 根据两点间经纬度坐标（double值），计算两点间距离，单位为米
     * @param lng1
     * @param lat1
     * @param lng2
     * @param lat2
     * @return
     */
    public static double getDistance(double lng1, double lat1, double lng2, double lat2){
        double radLat1 = rad(lat1);
        double radLat2 = rad(lat2);
        double a = radLat1 - radLat2;
        double b = rad(lng1) - rad(lng2);
        double s = 2 * Math.asin(
                Math.sqrt(
                        Math.pow(Math.sin(a/2),2)
                                + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)
                )
        );
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000;
        return s;
    }
     public static String  longitudeandlatitude (String message){
    String one = message.substring(0, 2);
    String two = message.substring(2, 4);
    String three = message.substring(4, 6);
    String four = message.substring(6, 8);
//         Long latitude8 = Long.parseLong(latitude, 16) ;
         Long longitude8 = Long.parseLong(four+three+two+one, 16);
//         Log.e("经度longitude1", "" +longitude8);
         String format = String.format("%.7f", (double) longitude8 / 10000000);
//         String format2 = String.format("%.7f", (double) longitude8 / 10000000);
    return  format;
}

    /**
     * test
     * @param args
     */
    public static void main(String[] args){
        double distance = getDistance(121.491909,31.233234,121.411994,31.206134);
        System.out.println("Distance is:"+distance);
    }

    /**
     *计算角度
     * @param lat_a 纬度1
     * @param lng_a 经度1
     * @param lat_b 纬度2
     * @param lng_b 经度2
     * @return  ：0-90度，位于中心点的东南方向；90-180，位于中心点的西南方向；180-270度，位于中心点的西北方向；270-360，位于中心点的东北方向；
     */
    public  static   double getAngle1(double lat_a, double lng_a, double lat_b, double lng_b) {

        double y = Math.sin(lng_b-lng_a) * Math.cos(lat_b);
        double x = Math.cos(lat_a)*Math.sin(lat_b) - Math.sin(lat_a)*Math.cos(lat_b)*Math.cos(lng_b-lng_a);
        double brng = Math.atan2(y, x);

        brng = Math.toDegrees(brng);
        if(brng < 0)
            brng = brng +360;
        return brng;

    }

    public void  otherweizhi(double lat_a, double lng_a, double lat_b, double lng_b){
        int  type=0;
        //0表示在当前车的前方，1表示在当前车的后方
        double angle1 = getAngle1(lat_a, lng_a, lat_b, lng_b);
        if (0<angle1&&angle1<=180) {
            type=0;
        } else    if (180<angle1&&angle1<=360) {
            type=1;
        }
        double distance = getDistance(lat_a, lng_a, lat_b, lng_b);
        //距离
    }



}
